字符串问题——字符串左半与右半交换

题目:给定一个字符类型的数组chas和一个整数size,将大小为size的左半区移到右半区,将右半区移到左半区。
例:
把chas看做字符串”ABCDE”,size=3,则最后字符串调整为”DEABC”。

实现:先把chas[0,..size-1]逆序,再把chas[size,…N-1]逆序。最后将chas整体逆序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Arrays;
public class RotateSize {
//实现以size为左半和右半的互换
public static String rotate (char[] chas, int size) {
if (chas == null || chas.length == 0) {
return null;
}
reverse (chas, 0, size -1);
reverse (chas, size, chas.length - 1);
reverse (chas, 0, chas.length - 1);
return Arrays.toString(chas);
}
//逆序数组
private static void reverse(char[] chas, int i, int j) {
while (i <= j) {
char tmp = chas[i];
chas[i] = chas[j];
chas[j] = tmp;
i++;
j--;
}
}
//Test
public static void main(String[] args) {
char[] chas = {'A','B','C','D','E'};
System.out.println(rotate(chas, 3));
}
}

输出:

1
[D, E, A, B, C]